package com.kaili.common.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.util.ResourceUtils;

/**
 * 生成静态html工具类
 */
public class FreemarkUtils {

	/**
	 * 获取打印模版
	 * @param values
	 * @param ftl
	 * @return
	 */
    public static String getPrintTemplate(String ftl,Map<String, Object> values){
		//定义字节数组输出流
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		//这是配置的核心类
		Configuration config = new Configuration();
		try {
			//设置模版存放目录
			config.setDirectoryForTemplateLoading(ResourceUtils.getFile("classpath:printTemplate"));
			//模版类
			Template tp = config.getTemplate(ftl+".ftl");
			//将变量与模版合并,并将合并后的内容给输出流
			tp.process(values, new OutputStreamWriter(output));
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}

		//返回输出流的字符串形式
		return output.toString();
	}

	/**
	 * 获取打印模版
	 * @param values
	 * @param ftl
	 * @return
	 */
	public static String getPrintTemplate(Configuration config,String ftl,Map<String, Object> values){
		//定义字节数组输出流
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		try {
			//模版类
			Template tp = config.getTemplate(ftl+".ftl");
			//将变量与模版合并,并将合并后的内容给输出流
			tp.process(values, new OutputStreamWriter(output));
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}

		//返回输出流的字符串形式
		return output.toString();
	}
}